/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package EntityState;

import java.io.Serializable;
import java.util.List;

/**
 *
 * @author James
 */
public class ReservableUnitState implements Serializable {
    private long      id;
    private String    name;
    private String    description;
    private boolean   active;
    private boolean   deleted;
    //Variables to control free slots
    private int       currentMonth;
    private int       currentYear;
    private int       currentMonthArray;
    private int[][][] firstMonth;
    private int[][][] secondMonth;
    private int[][][] thirdMonth;
    private int[][][] fourthMonth;
    private FileState   layout;
    private ItemState   reservedItem;
    private OutletState theOutlet;
    private ReservableUnitDetailsState latestReservableUnitDetails;
    private List<ReservableUnitDetailsState> listOfReservableUnitDetails;
    private List<FileState> listOfPictures;
    private List<ReservationState> listOfReservations;

    public ReservableUnitState(long id, String name) {
        this.id   = id;
        this.name = name;
    }
    
    public ReservableUnitState(long id, String name, List<ReservationState> listOfReservations) {
        this.id   = id;
        this.name = name;
        this.listOfReservations = listOfReservations;
    }

    public ReservableUnitState(long id, String name, OutletState theOutlet, ItemState reservedItem) {
        this.id           = id;
        this.name         = name;
        this.theOutlet    = theOutlet;
        this.reservedItem = reservedItem;
    }

    public ReservableUnitState(long id, String name, String description, ItemState reservedItem) {
        this.id           = id;
        this.name         = name;
        this.description  = description;
        this.reservedItem = reservedItem;
    }
    
    public ReservableUnitState(long id, String name, String description, boolean active, ItemState reservedItem) {
        this.id           = id;
        this.name         = name;
        this.description  = description;
        this.active       = active;
        this.reservedItem = reservedItem;
    }
    
    public ReservableUnitState(long id, String name, String description, FileState layout, ItemState reservedItem, ReservableUnitDetailsState latestReservableUnitDetails, List<FileState> listOfPictures) {
        this.id                = id;
        this.name              = name;
        this.description       = description;
        this.layout            = layout;
        this.reservedItem      = reservedItem;
        this.latestReservableUnitDetails = latestReservableUnitDetails;
        this.listOfPictures              = listOfPictures;
    }

    public ReservableUnitState(long id, String name, String description, boolean active, int currentMonth, int currentYear, int currentMonthArray, int[][][] firstMonth, int[][][] secondMonth, int[][][] thirdMonth, int[][][] fourthMonth, FileState layout, ItemState reservedItem, ReservableUnitDetailsState latestReservableUnitDetails, List<FileState> listOfPictures) {
        this.id                = id;
        this.name              = name;
        this.description       = description;
        this.active            = active;
        this.currentMonth      = currentMonth;
        this.currentYear       = currentYear;
        this.currentMonthArray = currentMonthArray;
        this.firstMonth        = firstMonth;
        this.secondMonth       = secondMonth;
        this.thirdMonth        = thirdMonth;
        this.fourthMonth       = fourthMonth;
        this.layout            = layout;
        this.reservedItem      = reservedItem;
        this.latestReservableUnitDetails = latestReservableUnitDetails;
        this.listOfPictures              = listOfPictures;
    }

    public ReservableUnitState(long id, String name, String description, int reservationNoShowFee, int reservationCancelFee, int reservableMinimumLength, int reservableMaximumLength, int reservationMinimumLeadTime, int reservationMaximumLeadTime, int numOfAvailableUnits, int currentMonth, int currentYear, int currentMonthArray, int[][][] firstMonth, int[][][] secondMonth, int[][][] thirdMonth, int[][][] fourthMonth, FileState layout, ItemState reservedItem, ReservableUnitDetailsState latestReservableUnitDetails, List<FileState> listOfPictures) {
        this.id                          = id;
        this.name                        = name;
        this.description                 = description;
        this.currentMonth                = currentMonth;
        this.currentYear                 = currentYear;
        this.currentMonthArray           = currentMonthArray;
        this.firstMonth                  = firstMonth;
        this.secondMonth                 = secondMonth;
        this.thirdMonth                  = thirdMonth;
        this.fourthMonth                 = fourthMonth;
        this.layout                      = layout;
        this.reservedItem                = reservedItem;
        this.latestReservableUnitDetails = latestReservableUnitDetails;
        this.listOfPictures              = listOfPictures;
    }
    
    //Getters and Setters
    public int getCurrentMonth() {
        return currentMonth;
    }

    public void setCurrentMonth(int currentMonth) {
        this.currentMonth = currentMonth;
    }

    public List<ReservationState> getListOfReservations() {
        return listOfReservations;
    }

    public void setListOfReservations(List<ReservationState> listOfReservations) {
        this.listOfReservations = listOfReservations;
    }

    public OutletState getOutlet() {
        return theOutlet;
    }

    public void setOutlet(OutletState theOutlet) {
        this.theOutlet = theOutlet;
    }

    public List<ReservableUnitDetailsState> getListOfReservableUnitDetails() {
        return listOfReservableUnitDetails;
    }

    public void setListOfReservableUnitDetails(List<ReservableUnitDetailsState> listOfReservableUnitDetails) {
        this.listOfReservableUnitDetails = listOfReservableUnitDetails;
    }

    public ReservableUnitDetailsState getLatestReservableUnitDetails() {
        return latestReservableUnitDetails;
    }

    public void setLatestReservableUnitDetails(ReservableUnitDetailsState latestReservableUnitDetails) {
        this.latestReservableUnitDetails = latestReservableUnitDetails;
    }

    public int getCurrentMonthArray() {
        return currentMonthArray;
    }

    public void setCurrentMonthArray(int currentMonthArray) {
        this.currentMonthArray = currentMonthArray;
    }

    public int getCurrentYear() {
        return currentYear;
    }

    public void setCurrentYear(int currentYear) {
        this.currentYear = currentYear;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    public int[][][] getFirstMonth() {
        return firstMonth;
    }

    public void setFirstMonth(int[][][] firstMonth) {
        this.firstMonth = firstMonth;
    }

    public int[][][] getFourthMonth() {
        return fourthMonth;
    }

    public void setFourthMonth(int[][][] fourthMonth) {
        this.fourthMonth = fourthMonth;
    }

    public long getId() {
        return id;
    }

    public void setId(long id) {
        this.id = id;
    }

    public FileState getLayout() {
        return layout;
    }

    public void setLayout(FileState layout) {
        this.layout = layout;
    }

    public List<FileState> getListOfPictures() {
        return listOfPictures;
    }

    public void setListOfPictures(List<FileState> listOfPictures) {
        this.listOfPictures = listOfPictures;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public ItemState getReservedItem() {
        return reservedItem;
    }

    public void setReservedItem(ItemState reservedItem) {
        this.reservedItem = reservedItem;
    }

    public int[][][] getSecondMonth() {
        return secondMonth;
    }

    public void setSecondMonth(int[][][] secondMonth) {
        this.secondMonth = secondMonth;
    }

    public int[][][] getThirdMonth() {
        return thirdMonth;
    }

    public void setThirdMonth(int[][][] thirdMonth) {
        this.thirdMonth = thirdMonth;
    }
    
    public boolean isActive() {
        return active;
    }

    public void setActive(boolean active) {
        this.active = active;
    }

    public boolean isDeleted() {
        return deleted;
    }

    public void setDeleted(boolean deleted) {
        this.deleted = deleted;
    }
}
